﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Data;
using Fantacid303.ProcessAffinityControl.Manager.MainWindowViewModels;
using System.Windows;

namespace Fantacid303.ProcessAffinityControl.Manager.Converters
{

	/// <summary>
	/// Returns <see cref=" Visibility.Visible"/> if the value is of type <see cref="ConfigurationEntryViewModel"/>, otherwise <see cref="Visibility.Collapsed"/>
	/// </summary>
	class EntryDetailVisibilityConverter : IValueConverter
	{
		/// <summary>
		/// Returns <see cref=" Visibility.Visible"/> if the value is of type <see cref="ConfigurationEntryViewModel"/>, otherwise <see cref="Visibility.Collapsed"/>
		/// </summary>
		/// <param name="value">The value produced by the binding source.</param>
		/// <param name="targetType">The type of the binding target property.</param>
		/// <param name="parameter">The converter parameter to use.</param>
		/// <param name="culture">The culture to use in the converter.</param>
		/// <returns>
		/// A converted value. If the method returns null, the valid null value is used.
		/// </returns>
		public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
		{
			return (value is ConfigurationEntryViewModel) ? Visibility.Visible : Visibility.Collapsed;
		}

		/// <summary>
		/// Converts a value.
		/// </summary>
		/// <param name="value">The value that is produced by the binding target.</param>
		/// <param name="targetType">The type to convert to.</param>
		/// <param name="parameter">The converter parameter to use.</param>
		/// <param name="culture">The culture to use in the converter.</param>
		/// <returns>
		/// A converted value. If the method returns null, the valid null value is used.
		/// </returns>
		public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
		{
			// we don't intend this to ever be called
			return null;
		}
	}

	/// <summary>
	/// Returns <see cref=" Visibility.Visible"/> if the value is of type <see cref="ConfigurationRuleViewModel"/>, otherwise <see cref="Visibility.Collapsed"/>
	/// </summary>
	class RuleDetailVisibilityConverter : IValueConverter
	{
		/// <summary>
		/// Returns <see cref=" Visibility.Visible"/> if the value is of type <see cref="ConfigurationRuleViewModel"/>, otherwise <see cref="Visibility.Collapsed"/>
		/// </summary>
		/// <param name="value">The value produced by the binding source.</param>
		/// <param name="targetType">The type of the binding target property.</param>
		/// <param name="parameter">The converter parameter to use.</param>
		/// <param name="culture">The culture to use in the converter.</param>
		/// <returns>
		/// A converted value. If the method returns null, the valid null value is used.
		/// </returns>
		public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
		{
			return (value is ConfigurationRuleViewModel)? Visibility.Visible : Visibility.Collapsed;

			//return false;
		}

		/// <summary>
		/// Converts a value.
		/// </summary>
		/// <param name="value">The value that is produced by the binding target.</param>
		/// <param name="targetType">The type to convert to.</param>
		/// <param name="parameter">The converter parameter to use.</param>
		/// <param name="culture">The culture to use in the converter.</param>
		/// <returns>
		/// A converted value. If the method returns null, the valid null value is used.
		/// </returns>
		public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
		{
			// we don't intend this to ever be called
			return null;
		}
	}

}
